1139E - Maximize Mex - CodeForces Solution


flows graph matchings graphs *2400

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
struct edge {
	int n,nxt;
	edge(int n,int nxt) {
		this->n=n;
		this->nxt=nxt;
	}
	edge() {}
} e[5050];
int head[5050],ecnt=-1;
void add(int from,int to) {
	e[++ecnt]=edge(to,head[from]);
	head[from]=ecnt;
}
int s[5050];
bool used[5050];
bool Find(int x) {
	if(used[x])
		return false;
	used[x]=1;
	for(int i=head[x]; ~i; i=e[i].nxt)
		if(s[e[i].n]==-1||Find(s[e[i].n])) {
			s[e[i].n]=x;
			return true;
		}
	return false;
}
int a[5050],b[5050],c[5050];
int ans[5050];
int main() {
	memset(head,-1,sizeof(head));
	memset(s,-1,sizeof(s));
	int n,m,q;
	scanf("%d%d",&n,&m);
	for(int i=1; i<=n; ++i)
		scanf("%d",&a[i]);
	for(int i=1; i<=n; ++i)
		scanf("%d",&b[i]);
	scanf("%d",&q);
	for(int i=1; i<=q; ++i) {
		scanf("%d",&c[i]);
		used[c[i]]=1;
	}
	for(int i=1; i<=n; ++i)
		if(!used[i])
			add(a[i],b[i]);
	int t=0;
	for(int i=q; i>=1; --i) {
		memset(used,0,sizeof(used));
		while(Find(t)) {
			++t;
			memset(used,0,sizeof(used));
		}
		ans[i]=t;
		add(a[c[i]],b[c[i]]);
	}
	for(int i=1; i<=q; ++i)
		printf("%d\n",ans[i]);
	return 0;
}
 			  		 	  	  		  										


Comments

Submit
0 Comments
More Questions

MSNSADM1 Football
MATCHES Playing with Matches
HRDSEQ Hard Sequence
DRCHEF Doctor Chef
559. Maximum Depth of N-ary Tree
821. Shortest Distance to a Character
1441. Build an Array With Stack Operations
1356. Sort Integers by The Number of 1 Bits
922. Sort Array By Parity II
344. Reverse String
1047. Remove All Adjacent Duplicates In String
977. Squares of a Sorted Array
852. Peak Index in a Mountain Array
461. Hamming Distance
1748. Sum of Unique Elements
897. Increasing Order Search Tree
905. Sort Array By Parity
1351. Count Negative Numbers in a Sorted Matrix
617. Merge Two Binary Trees
1450. Number of Students Doing Homework at a Given Time
700. Search in a Binary Search Tree
590. N-ary Tree Postorder Traversal
589. N-ary Tree Preorder Traversal
1299. Replace Elements with Greatest Element on Right Side
1768. Merge Strings Alternately
561. Array Partition I
1374. Generate a String With Characters That Have Odd Counts
1822. Sign of the Product of an Array
1464. Maximum Product of Two Elements in an Array
1323. Maximum 69 Number